﻿using System;
using System.Collections.Generic;
using Abp.Dependency;

namespace Camc.OutsourceProcession.Order
{
	public interface IProductionOrderManager:ITransientDependency
	{
		/// <summary>
		/// 创建
		/// </summary>
		/// <param name="taskCode"></param>
		/// <param name="taskKey"></param>
		/// <param name="quantity"></param>
		/// <param name="deliveryTime"></param>
		/// <returns></returns>
		long CreateOrder(string taskCode, string taskKey, int quantity, DateTime deliveryTime, string companyId);
		/// <summary>
		/// 暂停
		/// </summary>
		void Suspend(long productionOrderId);

		/// <summary>
		/// 正常
		/// </summary>
		void Normal(long productionOrderId);

		/// <summary>
		/// 作废
		/// </summary>
		void Dispose(long productionOrderId);

		/// <summary>
		/// 报废
		/// </summary>
		void Scrap(long productionOrderId);

		/// <summary>
		/// 取回任务（从制造商手中取回任务）
		/// </summary>
		void Renew(long productionOrderId, string companyId);

		/// <summary>
		/// 接收
		/// </summary>
		void Receive(long productionOrderId, string companyId);

		/// <summary>
		/// 加工
		/// </summary>
		void Process(long productionOrderId,string equipmentDisplayName);

		/// <summary>
		/// 交付
		/// </summary>
		void Deliver(long productionOrderId);

		/// <summary>
		/// 拆解
		/// </summary>
		List<long> Separate(long productionOrderId, params int[] separateCountList);
	}
}